package cn.matezk.lianlian.beans;

import cn.hutool.core.annotation.Alias;
import cn.hutool.core.util.ObjectUtil;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Data
public class SimCard {
    // 号码
    private String msisdn;
    // 卡号
    private String iccid;
    // 卡例行
    private String simType;
    // 状态 已激活 去激活 停机 拆机
    private String simStatus;
    // IMEI
    private String imei;
    // 当月已用流量(b)
    @Alias("totalVolumnGPRS")
    private Integer monthUsed;
    // 达量断网阈值(b)
    @Alias("GPRS_ShutDown")
    private Integer stopThreshold;
    // 下行限速
    @Alias("normalSpeedValue")
    private String downRateLimit;
    // 当月短信用量
    @Alias("totalVolumnSMS")
    private Integer smsUsed;
    // 最后一次上线省份
    private String province;
    @Alias("is_lock")
    private Boolean isLock;
    // 卡标识
    private String identify;
    // 剩余沉默天数
    @Alias("Sim_reticent ")
    private Integer remainReticentDays;
    // 卡开时间
    @Alias("paddle_date")
    private Date paddleDate;
    // 激活时间
    @Alias("activate_date")
    private Date activeDate;
    // 套餐包名字
    @Alias("p_name")
    private String pkgName;
    // 企业名字
    @Alias("cname")
    private String enterpriseName;
    // 终端类型 网终端(CPE/MIFI)
    @Alias("classification")
    private String terminalType;
    // 终端型号 B316-855
    @Alias("model")
    private String model;
    // 集团锁 集团机卡绑定或违规停机锁定
    @Alias("simLock")
    private String groupLock;
    // 套餐ID
    @Alias("pid")
    private String pkgId;
    private String imsi;
    // 可用流量
    @Alias("utiliflow")
    private Long usableFlow;
    // 已用流量
    @Alias("usedflow")
    private Long usedFlow;
    // 使用率
    @Alias("rateflow")
    private BigDecimal rateFlow;
    // 可用天数
    @Alias("useday")
    private Integer useDay;
    // 到期时间
    @Alias("duedate")
    private Date expireDate;
    // 剩余流量
    private Long remainFlow;
    // 剩余天数
    private Integer remainDays;

    public String getPkgName() {
        if (ObjectUtil.isEmpty(pkgName))    return "";
        Pattern p = Pattern.compile("\\d+M/年");
        Matcher m = p.matcher(pkgName);
        while (m.find()) {
            return m.group();
        }
        return pkgName;
    }

    public Long getUsableFlow() {
        if (ObjectUtil.isNull(usableFlow))    return 0L;
        return usableFlow / 1024 / 1024;
    }

    public Long getUsedFlow() {
        if (ObjectUtil.isNull(usedFlow))    return 0L;
        return Long.valueOf(usedFlow) / 1024 / 1024;
    }
}
